package cn.kinoko.common.aspect.annotation;

import java.lang.annotation.*;

/**
 * 滑动时间窗口限流器注解
 * @author kinoko
 */
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface SlidingWindowLimiter {

    // 缓存的key
    String key() default "";
    // 缓存的key参数
    String[] params() default {};
    // 缓存粒度是否加入用户信息
    boolean currentUser() default false;
    // 最大请求数
    int maxRequest() default 5;
    // 时间窗口大小（毫秒）
    int windowSizeInMs() default 500;
    // 等待时间
    long waitTime() default -1;
    // 异常描述
    String errorDesc() default "系统繁忙，请稍后再试";

}
